package front

import (
	"geekai/api/dto/response"
	"geekai/api/handler"
	"geekai/core"
	"geekai/model"
	"geekai/utils"
	"github.com/gin-gonic/gin"
	"gorm.io/gorm"
)

type ChatAppTypeHandler struct {
	handler.BaseHandler
}

func NewChatAppTypeHandler(app *core.AppServer, db *gorm.DB) *ChatAppTypeHandler {
	return &ChatAppTypeHandler{BaseHandler: handler.BaseHandler{App: app, DB: db}}
}

// List godoc
// @Summary      获取应用分类列表
// @Description  获取应用分类列表
// @Tags         前台-应用分类
// @Accept       json
// @Produce      json
// @Success      200  {object}  types.BizVo{data=[]response.AppTypeListResp}
// @Router       /api/app/type/list [get]
// @Security ApiKeyAuth
func (h *ChatAppTypeHandler) List(c *gin.Context) {
	var items []model.AppType
	var appTypes = make([]response.AppTypeListResp, 0)
	err := h.DB.Where("enabled", true).Order("sort_num asc").Find(&items).Error
	if err != nil {
		utils.ERROR(c, "操作数据库出错："+err.Error())
		return
	}
	for _, item := range items {
		var appTypeRsp response.AppTypeListResp
		err = utils.CopyObject(item, &appTypeRsp)
		if err != nil {
			log.Errorf("拷贝数据出错：%v", err)
			continue
		}
		appTypeRsp.Id = item.Id
		appTypeRsp.CreatedAt = item.CreatedAt.Unix()
		appTypes = append(appTypes, appTypeRsp)
	}
	utils.SUCCESS(c, appTypes)
}
